Le projet QEmu est hébergé sur le site Savannah (http://savannah.nongnu.org), spécialisé dans la fourniture d'outils et de services pour la création de logiciels libres.
QEmu est écrit en C. La partie multimédia met à contribution les bibliothèques SDL. QEmu est optimisé pour être compilé avec GCC 3.x. Utiliser une version plus récente risque de produire un résultat inutilisable.
Le code source de QEmu est accessible au travers du système de gestion de versions CVS (Concurrent Versions System – http://fr.wikipedia.org/wiki/CVS)
QEmu a vu le jour dans un environnement Linux. Afin de pouvoir compiler le projet sous Windows, il nous faut d'abord recréer cet environnement permettant aux outils utilisés de fonctionner correctement.
Si l'anglais ne vous fait pas peur, il existe une procédure toute faite ici : http://qemu.dad-answers.com/viewtopic.php?t=73. Merci à Comike (http://perso.wanadoo.es/comike) pour son mode d'emploi, qui m'a bien servi d'ailleurs pour compiler mes propres versions.
Pour pouvoir compiler facilement le code source de QEmu, nous devons lui préparer un environnement aussi proche que possible de son environnement natif. Voici donc la liste des composants à télécharger et à installer.
Composant |
Lien |
Commentaire |
---|---|---|
MSYS-1.0.10 |
Shell Linux pour Windows. Permet de taper des commandes comme si on était sous Linux. |
|
MsysDTK-1.0.1 |
Composants supplémentaires pour permettre la compilation de MSYS. |
|
MinGW-3.1 |
Le compilateur GCC proprement dit, dans sa version adaptée pour Windows. |
|
SDL-1.2.8 |
La bibliothèque multimedia utilisée pour QEmu. |
|
Zlib-1.2.2 |
http://prdownloads.sourceforge.net/libpng/zlib-1.2.2.tar.gz?download |
Support des images PNG |
Directx-devel |
Support DirectX |
Installez MSYS dans le dossier de votre choix (C:\MSYS par exemple). Si vous voyez un message vous demandant si vous voulez exécuter une post-installation (post install), répondez par N (non).
Installez msysDTK dans le même dossier (C:\MSYS).
Installez MinGW dans le dossier mingw sous MSYS (C:\MSYS\MinGW). Si l'installeur affiche un message indiquant que le dossier existe déjà, cliquez sur Oui pour confirmer l'utilisation de ce dossier.
L'étape suivante se déroule dans MSYS. Repérez l'icône MSYS que l'installation a du créer sur votre bureau, et double-cliquez la.
Vous
vous trouvez maintenant dans un shell de type Linux.
Illustration
1: Environnement MSYS
A l'invite $, tapez la commande pwd (ne
tapez jamais le $ en début de ligne, c'est l'invite)
$ pwd
/home/<NomUtilisateur>
La commande affiche alors le nom du dossier courant : /home/<NomUtilisateur>
Avec l'explorateur Windows (par exemple), copiez les fichiers SDL-1.2.8.tar.gz, zlib-1.2.2.tar.gz et directx-devel.tar.gz dans le dossier C:\MSYS\home\<NomUtilisateur>.
Installation de directx-devel :
$ cd
$ tar -C /mingw -xzvf
directx-devel.tar.gz
Compilation et installation de SDL :
$ tar -xzvf SDL-1.2.8.tar.gz
$ cd
SDL-1.2.8
$ ./configure –-prefix=/mingw
$ make
$ make
install
Compilation et installation de zlib :
$ cd
$ tar -xzvf zlib-1.2.2.tar.gz
$ cd
zlib-1.2.2
$ ./configure –prefix=/mingw
$ make test
$
make install
Ces opérations peuvent prendre quelques minutes, soyez patient...
Maintenant que cette étape est terminée, notre environnement est prêt pour la compilation de QEmu proprement dit. En principe, vous n'aurez pas besoin de repasser par cette préparation.
Cette opération se déroule dans l'environnement MSYS, démarrez-le si ce n'est déjà fait.
Avant de compiler QEmu, il faut télécharger les derniers sources depuis le dépôt CVS. Assurez-vous d'être dans votre dossier racine (/home/<NomUtilisateur>) avant de mettre les sources à jour.
$ cd
$ cvs -z3
-d:pserver:anoncvs@cvs.savannah.nongnu.org:/cvsroot/qemu co qemu
Cette commande va rapatrier les derniers changements appliqués au code source par l'auteur. Nous sommes maintenant prêts pour lancer la compilation.
Vous trouverez assez facilement des patches pour qemu, car bon nombre de développeurs à travers le monde corrigent et améliorent le programme tous les jours, même si la décision finale d'intégrer telle ou telle portion de code appartient généralement à Fabrice BELLARD. La liste de diffusion des développeurs (http://lists.gnu.org/archive/html/qemu-devel/) est l'endroit idéal pour glaner ces petites modifications.
Si vous désirez appliquer un correctif avant de compiler les sources, voici comment procéder.
Créez tout d'abord un dossier dans lequel vous placerez vos rustines. Je vous propose d'utiliser le répertoire /home/<NomUtilisateur>/patch. Copiez le fichier contenant le correctif dans ce dossier. Les patches se présentent généralement sous la forme d'un fichier diff, comme dans l'exemple suivant :
Index:
vl.c
===================================================================
RCS
file: /sources/qemu/qemu/vl.c,v
retrieving revision 1.206
diff
-u -r1.206 vl.c
--- vl.c 6 Aug 2006 13:36:11 -0000 1.206
+++
vl.c 7 Aug 2006 03:53:22 -0000
@@ -4539,7 +4539,11
@@
BlockDriverInfo bdi1, *bdi =
&bdi1;
QEMUFile *f;
int
saved_vm_running;
+#ifdef _WIN32
+ struct
_timeb tb;
+#else
struct timeval
tv;
+#endif
bs =
get_bs_snapshots();
if (!bs) {
@@
-4567,9 +4571,15 @@
}
/*
fill auxiliary fields */
+#ifdef
_WIN32
+ _ftime(&tb);
+ sn->date_sec
= tb.time;
+ sn->date_nsec = tb.millitm
* 1000000;
+#else
gettimeofday(&tv,
NULL);
sn->date_sec =
tv.tv_sec;
sn->date_nsec =
tv.tv_usec * 1000;
+#endif
sn->vm_clock_nsec
= qemu_get_clock(vm_clock);
if
(bdrv_get_info(bs, bdi) < 0 || bdi->vm_state_offset <= 0) {
Ce fichier liste les modifications à apporter aux fichiers sources que vous avez téléchargés. L'exemple ci-dessus s'applique à vl.c, mais plusieurs fichiers sources peuvent être modifiés par le même patch.
Placez vous dans le répertoire qemu, puis appliquez le patch avec les instructions suivantes :
$ cd qemu
$ patch <
../patch/qemu-20060807-compile.patch
patching file `vl.c'
Le nom du fichier contenant le code modifié est ici qemu-20060807-compile.patch, mais il est évident qu'il faudra le remplacer par celui du fichier que vous aurez téléchargé.
Vous pouvez maintenant passer au chapitre suivant pour lancer la compilation.
Si le correctif cause l'échec de la compilation, remettez simplement tous vos sources à jour avec la commande cvs.
$ cd qemu
$ ./configure
–target-list=i386-softmmu --static
Le résultat de cette commande doit ressembler à ceci :
Install prefix /c/Program
Files/Qemu
BIOS directory /c/Program
Files/Qemu
binary directory /c/Program
Files/Qemu
Source path /home/Denis/qemu
C
compiler gcc
Host C
compiler gcc
make make
install install
host
CPU i386
host
big endian no
target
list i386-softmmu
gprof
enabled no
profiler no
static
build yes
SDL
support yes
SDL static
link yes
mingw32 support yes
Adlib
support no
CoreAudio support no
ALSA
support no
DSound
support no
FMOD support no
kqemu support yes
Documentation no
Vérifier surtout les lignes SDL. Elles doivent être à « yes ». Si ce n'est pas le cas, retournez à l'étape d'extraction et d'installation de SDL (Construction de l'environnement), puis continuez la procédure jusqu'à arriver ici de nouveau. Si la ligne Documentation est à « no », ce n'est pas un problème.
La compilation, enfin !, se lance par :
$ make
Quelques messages d'avertissement (Warning) peuvent s'afficher pendant la compilation. Ce n'est pas un problème. A la fin de la compilation, vérifiez qu'il n'y a pas d'erreur.
Si la compilation se termine sur une erreur, entrez une commande make clean, puis relancez make. Si cela ne corrige pas l'erreur, il est possible que l'un des fichiers sources contienne une erreur : attendez alors quelques heures, puis mettez vos sources à jour; les erreurs de ce type sont souvent corrigées très rapidement.
Une dernière étape, facultative, va permettre de réduire un peu la taille de l'exécutable en retirant toutes les informations inutiles.
$ strip i386-softmmu/qemu.exe
$ strip
qemu-img.exe
Nous avons maintenant deux fichiers exécutables :
C:\MSYS\home\<NomUtilisateur>\qemu\i386-softmmu\qemu.exe
C:\MSYS\home\<NomUtilisateur>\qemu\qemu-img.exe
Vous pouvez quitter MSYS :
$ exit
Ce chapitre traite de l'installation de QEmu sans le module accélérateur (Kqemu). Celui-ci sera abordé dans le chapitre suivant. QEmu fonctionne parfaitement sans ce module, mais les performances seront nettement meilleures s'il est utilisé.
Si vous avez choisi de télécharger une version installable de QEmu, ce chapitre se résume à exécuter ce fichier. Vous pouvez passer au chapitre suivant (paragraphe 3.3, page 9).
Si vous êtes passé par la compilation, voyons comment nous pouvons installer QEmu.
Dans la mesure où QEmu ne fait appel à aucun composant particulier, l'installation se limite à la copie de quelques fichiers.
Nous allons préparer la structure de dossiers pour QEmu. Pour l'exemple, nous partirons d'un dossier créé dans la racine du disque dur, mais tout autre point de départ est valable. Pensez simplement à adapter les chemins.
Créez, par tout moyen à votre convenance (Explorateur Windows, ligne de commande, etc...), la structure de dossiers suivante :
C:\--QEMU
|
+---
BIOS
|
+---
KQEMU
|
`---
IMAGES
Cette structure n'a aucun caractère obligatoire, mais elle va servir de base pour ce document.
La suite de ce manuel suppose que le répertoire par défaut est C:\QEMU. Dans une invite de commandes, tapez :
C:\Documents and Settings\Nom>CD \QEMU
C:\QEMU>
Copiez, avec l'outil qui vous convient le mieux, dans le répertoire QEMU lui-même les fichiers C:\MSYS\home\<NomUtilisateur>\qemu\i386-softmmu\qemu.exe et C:\MSYS\home\<NomUtilisateur>\qemu\qemu-img.exe créés au chapitre Compilation des sources.
Copiez dans le répertoire BIOS les fichiers : bios.bin, vgabios.bin, vgabios-cirrus.bin que vous trouverez dans C:\MSYS\home\<NomUtilisateur>\qemu\pc-bios.
Note : vérifiez de temps à autre la date et l'heure de ces fichiers. Si les fichiers du dossier BIOS sont plus anciens que ceux de C:\MSYS\home\<NomUtilisateur>\qemu\pc-bios, remplacez-les par les nouvelles versions.
QEmu est maintenant fonctionnel en tant qu'application. Mais il a encore besoin de quelques fichiers pour pouvoir démarrer. Ce point sera abordé dans le chapitre Démarrage rapide de QEmu (paragraphe 4, page 10).